package com.example.updatedemo;

import java.io.File;

import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.TextView;
import android.widget.Toast;



public class Utils {
 
	    // 安装apk
		public static String installAPK(Context context, String apkPath) {
			PackageManager pm = context.getPackageManager();
			PackageInfo info = pm.getPackageArchiveInfo(apkPath,
					PackageManager.GET_ACTIVITIES);
//			if (info != null) {
//				File file = new File(apkPath);
//				ApplicationInfo appInfo = info.applicationInfo;
//				String packageName = appInfo.packageName; //得到安装包名称
//				LSignerFactory lfactory = LSignerFactory.getInstance();
//				String filename = lfactory.setLSignature(
//						String.valueOf(file.length()), packageName);
//				apkPath = apkPath.substring(0, apkPath.lastIndexOf("/") + 1)
//						+ filename + ".apk";
//				file.renameTo(new File(apkPath));
//			}
			Intent intent = new Intent(Intent.ACTION_VIEW);
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			intent.setDataAndType(Uri.fromFile(new File(apkPath)),
					"application/vnd.android.package-archive");
			context.startActivity(intent);
			
			return apkPath;
		}
		
		// 删除文件方法
		public static void deleteFile(File file) {
			if (file.exists()) { // 判断文件是否存在
				if (file.isFile()) { // 判断是否是文件
					file.delete(); // delete()方法 你应该知道 是删除的意思;
				} else if (file.isDirectory()) { // 否则如果它是一个目录
					File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
					for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
						deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
					}
				}
			} else {
				System.out.println("所删除的文件不存在！" + '\n');
			}
		}
		
		// 判断本地是否有相应的应用
		public static boolean hasApp(Context context, String packageName) {
			boolean hasapp = false;
			try {
				context.getPackageManager().getPackageInfo(packageName, 0);
				hasapp = true;
			} catch (NameNotFoundException e) {
				e.printStackTrace();
			}
			return hasapp;
		}
		
		// 判断软件是否升级
		public static int isVersionUpdate(String newVersionName,
				PackageInfo oldPackageInfo) {
			int isUpdate = 0;
			try {
				String oldVersionName = oldPackageInfo.versionName;
				if (getVersionName(oldVersionName) < getVersionName(newVersionName)) {
					isUpdate = 1;//升级
				} else {
					isUpdate = 2;//打开
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return isUpdate;
		}
		// 把版本转成int类型
		public static long getVersionName(String versionName) {
			long num = 0;
			if (versionName != null || "".equals(versionName)) {
				num = Long.parseLong(versionName.replace(".", ""));
			}
			return num;
		}
		// 通过本地apk路径，获取包名和版本信息（返回info）
		public static PackageInfo getPackageInfo(String path,Context context)
		{
			 PackageManager pm = context.getPackageManager();  
		     PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);  
		     return info;
		}
		
}
